
import com.sun.rowset.CachedRowSetImpl;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author tub
 */
public class Performer implements MusicEntity
{
    public Performer()
    {
    }

    @Override
    public String toString()
    {
        return "Performer";
    }

    /**
     * Получает полные данные о исполнителе
     * @param id уникальный номер строки
     * @return набор с полученной информацией о исполнителе
     * @throws SQLException
     */
    public CachedRowSetImpl select(String id) throws SQLException
    {
        Connection conn = null;

        try
        {
            conn = MusicFrame.getConnection();
        }
        catch (IOException ex)
        {
             ex.printStackTrace();
        }

        String performer =
        "SELECT id, title, birthday, deathday, country, creator_id, info" +
        " FROM performer " +
        " WHERE id = ?";

        PreparedStatement performerStat = conn.prepareStatement(performer);
        performerStat.setString(1, id);
        CachedRowSetImpl crs = new CachedRowSetImpl();
        crs.populate(performerStat.executeQuery());
        conn.close();

        return crs;
    }

    /**
     * Получает краткие данные о исполнителе
     * @param title название или часть названия без учета регистра
     * @return набор с полученной информацией о исполнителе (название и id)
     * @throws SQLException
     */
    public CachedRowSetImpl selectTitle(String title) throws SQLException
    {
         Connection conn = null;

        try
        {
            conn = MusicFrame.getConnection();
        }
        catch (IOException ex)
        {
             ex.printStackTrace();
        }

        String performer =
        "SELECT id, title" +
        " FROM performer" +
        " WHERE UPPER (title) LIKE UPPER (?)";

        PreparedStatement performerStat = conn.prepareStatement(performer);
        performerStat.setString(1, "%" + title + "%");
        CachedRowSetImpl crs = new CachedRowSetImpl();
        crs.populate(performerStat.executeQuery());
        conn.close();

        return crs;
    }

    /**
     * Запрашивает у базы все экзепляры таблицы Performer
     * @return набор с полученной информацией обо всех исполнителях
     * @throws SQLException
     */
    public CachedRowSetImpl selectAll() throws SQLException
    {
        Connection conn = null;

        try
        {
            conn = MusicFrame.getConnection();
        }
        catch (IOException ex)
        {
             ex.printStackTrace();
        }

        String perf =
        "SELECT id, title, country, parent_id, info" +
        " FROM label";

        Statement stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        CachedRowSetImpl crs = new CachedRowSetImpl();
        crs.populate(stat.executeQuery(perf));
        conn.close();

        return crs;
    }

}
